import request from '@/utils/request';
import qs from 'qs';
import type { ResponseData } from '../typing';
export function getBuildTree(projectCode: string): Promise<any> {
    return request.get(`/basic/building/tree/${projectCode}`);
}
export function getMedicalBuildTree(): Promise<any> {
    return request.get(`/yfwy/medical/project/tree`);
}
// 响应接口
export interface GetBuildingRes {
    code: number;
    data: {
        //  主键 */
        id: number;
        //  上级ID 顶级=0 */
        parentId: number;
        //  项目code */
        projectCode: string;
        //  名称 */
        name: string;
        //  层级 */
        level: number;
        //  类型:1->房产,2->车位,3->别墅,4->商铺 */
        type: number;
    };
    msg: string;
}
/**
 * 获得小区楼栋详情
 * @param {string} id
 * @returns
 */
export function getBuilding(id: number): Promise<GetBuildingRes> {
    return request.get(`/basic/building/get/${id}`);
}
/**
 * 删除小区楼栋
 * @param {string} id
 * @returns
 */
export function deleteBuilding(id: string): Promise<ResponseData<boolean>> {
    return request.delete(`/basic/building/delete/${id}`);
}
// 参数接口
export interface CreateBuildingParams {
    //  项目code */
    projectCode: string;
    //  楼栋名称 */
    buildingName: string;
    //  房产类型(字典项value) */
    propertyType: string;
    //  交付类型(字典项value) */
    deliveryType: string;
    //  单元数 */
    unitCnt: number;
    //  单元列表 */
    details: {
        //  单元(数字) */
        unit: Record<string, unknown>;
        //  楼层数 */
        floorCnt: Record<string, unknown>;
        //  每层房间数 */
        roomCnt: Record<string, unknown>;
    }[];
}
/**
 * 创建小区楼栋
 * @param {object} params 管理后台 - 小区楼栋树创建 Request VO
 * @param {string} params.projectCode 项目code
 * @param {string} params.buildingName 楼栋名称
 * @param {string} params.propertyType 房产类型(字典项value)
 * @param {string} params.deliveryType 交付类型(字典项value)
 * @param {number} params.unitCnt 单元数
 * @param {array} params.details 单元列表
 * @returns
 */
export function createBuilding(params: CreateBuildingParams): Promise<ResponseData<boolean>> {
    return request.post(`/basic/building/create`, params);
}
// 参数接口
export interface CreateShopParams {
    //  项目code */
    projectCode: string;
    //  楼栋名称 */
    buildingName: string;
    //  房产类型(字典项value) */
    propertyType: string;
    //  层数 */
    floorCnt: number;
    //  楼层列表 */
    details: {
        //  楼层(数字) */
        floor: Record<string, unknown>;
        //  每层房间数 */
        roomCnt: Record<string, unknown>;
    }[];
}
/**
 * 创建商铺
 * @param {object} params 管理后台 - 小区楼栋树创建 Request VO
 * @param {string} params.projectCode 项目code
 * @param {string} params.buildingName 楼栋名称
 * @param {string} params.propertyType 房产类型(字典项value)
 * @param {number} params.floorCnt 层数
 * @param {array} params.details 楼层列表
 * @returns
 */
export function createShop(params: CreateShopParams): Promise<ResponseData<boolean>> {
    return request.post(`/basic/building/shop`, params);
}
// 参数接口
export interface CreateVillaParams {
    //  项目code */
    projectCode: string;
    //  楼栋名称 */
    buildingName: string;
    //  房产类型(字典项value) */
    propertyType: string;
    //  交付类型(字典项value) */
    deliveryType: string;
    //  楼层户数 */
    roomCnt: number;
    //  户列表 */
    rooms: Record<string, unknown>[];
}
/**
 * 创建别墅
 * @param {object} params 管理后台 - 小区楼栋树创建 Request VO
 * @param {string} params.projectCode 项目code
 * @param {string} params.buildingName 楼栋名称
 * @param {string} params.propertyType 房产类型(字典项value)
 * @param {string} params.deliveryType 交付类型(字典项value)
 * @param {number} params.roomCnt 楼层户数
 * @param {array} params.rooms 户列表
 * @returns
 */
export function createVilla(params: CreateVillaParams): Promise<ResponseData<boolean>> {
    return request.post(`/basic/building/villa`, params);
}

/**
 * 楼栋数据到房间号
 * @param projectCode
 * @returns
 */
export function queryBuildTree2Room(projectCode: string): Promise<ResponseData<any>> {
    return request.get(`/basic/building/tree/rooms/${projectCode}`);
}
/**
 * 楼栋数据到房间号--无公区
 * @param projectCode
 * @returns
 */
export function queryBuildTree2RoomNoPublic(projectCode: string): Promise<ResponseData<any>> {
    return request.get(`/basic/building/tree/rooms/nopublic/${projectCode}`);
}

// 参数接口
export interface UpdateBuildingParams {
    id: number;
    name: string;
}

/**
 * 更新小区楼栋
 * @param {object} params 管理后台 - 小区楼栋树更新 Request VO
 * @param {number} params.id 主键
 * @param {string} params.name 名称
 * @returns
 */
export function updateBuilding(params: UpdateBuildingParams): Promise<ResponseData<boolean>> {
    return request.put(`/basic/building/update`, params);
}

export function queryTreeByProjectCodes(params: CreateBuildingParams): Promise<ResponseData<any>> {
    return request.post(`/basic/building/tree`, params);
}
